﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 垃圾小游戏.class2;

namespace 垃圾小游戏.class1
{
    /// <summary>
    /// 场景类型
    /// </summary>
    enum E_ScenceType
    {
        Begin,
        Game,
        End,
    }
    internal class Game
    {
        //游戏窗口宽高
        public const int w = 80;//const常量，任何地方都能获得它，不能被外界修改
        public const int h = 20;
        //当前选中场景
        public static IScenceUPdate nowScence;//静态的目的是配合下面静态函数使用

        /// <summary>
        /// 初始化控制台
        /// </summary>
        public Game()
        {
            Console.CursorVisible = false;
            Console.SetWindowSize(w, h);//设置窗口大小
            Console.SetBufferSize(w, h);//设置画布大小（？）

            ChangeScence(E_ScenceType.Begin);//场景切换到开始场景上去
        }
        /// <summary>
        /// 游戏开始的方法
        /// </summary>
        public void Start()
        {
            //游戏主循环 负责游戏场景逻辑的更新 
            while (true)
            {
                //判断当前场景不为空就更新
                if (nowScence != null)
                {
                    nowScence.Update();
                }
            }
        }
        /// <summary>
        /// 场景切换
        /// </summary>
        /// <param name="type"></param>
        public static void ChangeScence(E_ScenceType type)
        {
            Console.Clear();//换场景之前 应该把上一个场景的绘制内容清除
            switch (type)//这样写很容易产生垃圾，但目前先这样写
            {
                case E_ScenceType.Begin:
                    nowScence = new BeginScence();
                    break;
                case E_ScenceType.Game:
                    nowScence = new GameScence();
                    break;
                case E_ScenceType.End:
                    nowScence = new EndScence();
                    break;
            }

        }
    }
}
